import {createWebHistory, createRouter} from "vue-router"
import routes from "./routes"
import useTabsStore from "../store/tabs"
import useUserStore from "../store/useUserStore"

let tabsStore:any = undefined

const router = createRouter({
    history: createWebHistory(),
    routes,
})

// 进入页面前触发
router.beforeEach((to) => {
    if (!tabsStore){
        tabsStore = useTabsStore()
    }
    tabsStore.addTab({
        path: to.path,
        title:to.meta?.title??'未命名',
    })
})

// 设置白名单，白名单中的路由不需要登录验证
const whiteList = ['/login']

// 进入路由前判断是否登录
// router.beforeEach((to)=>{
//     // 判断是否在白名单中
//     if (!whiteList.includes(to.path)){
//         // 判断是否登录
        
//     }
// })
router.beforeEach(async(to) => {
    if (!userStore) {
      userStore = useUserStore()
    }
    // 获取用户登录的 token
    const token = userStore.token
  
    // 用户已登录
    if (token) {
      // 判断是否有用户基本信息，没有的话则查询
      const userInfo = userStore.userInfo
      if (!userInfo) {
        // 等待查询用户信息
        await userStore.getUserInfoAction()
        // 获取用户菜单路由表
        const menuRoutes = await userStore.menuRoutes
        // 动态添加路由
        router.addRoute({ path: '/', component: SiteLayout, children: menuRoutes })
        return to
      }
      // 已登录再访问登录页面，则直接跳转到主页面
      if (to.path === '/login') {
        return '/dashboard'
      }
    } else { // 用户未登录
      // 访问非白名单页面，则跳转到登录页面
      if (!whiteList.includes(to.path)) {
        return '/login'
      }
    }
  })

export default router